<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
//Ultima verificacion: 15-10-2014 ; 22-11-2014 ; 28-02-2015
class Curso extends CI_Controller {
	//Metodo constructor de la clase
	function __construct(){
		parent::__construct();
	}
	
	//Este metodo no se puede llamar con ajax
	//Muestra un listado con todos los cursos activos o inactivos pero NO los borrados segun los filtros aplicados
	//Filtros:
	//Si idCicloLectivo es igual a cero, hay que mostrar todos los cursos existentes del ciclo vigente. Si no hay ciclo lectivo vigente no se muestra nada.
	//Si idCicloLectivo es distinto de cero, hay que mostrar solo los cursos del ciclo en cuestion.
	//Lo mismo ocurre con el turno. 
	//Ultima verificación: 22-09-2014 ; 28-10-2014
	function consultar($idCicloLectivo=null, $idTurno=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1')){
			//Segunda comprobacion: Que idCicloLectivo pasado sea numerico y mayor o igual que cero. Lo mismo para el turno.
			if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idTurno) && $idTurno>=0){
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para corroborar que exista
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de los turnos
				$this->load->model('m_turno');
				
				//Busco al turno para corrobar que exista
				$turno = $this->m_turno->get($idTurno);
				
				//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero. Lo mismo para el turno
				if(($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($turno->num_rows() == 1 || $idTurno==0)){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo de filtrado
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los turnos activos
					$listadoTurnos = $this->m_turno->buscarActivos();
					
					//Le paso el listado de todos los turnos a la vista para que los muestre en un combo de filtrado
					$datos['turnos'] = $listadoTurnos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Le pasamos a la vista cual es el ciclo lectivo que debe mostrar seleccionado en el combo de filtrado
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
					
					//Le paso a la vista el id del turno para que lo seleccione en el combo de filtrado
					$datos['idTurnoSel'] = $idTurno;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a la consulta de la busqueda de cursos segun el ciclo lectivo y turno seleccionados (Se muestran en la tabla)
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion = "";
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							$restriccion = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							$restriccion = " AND curso.idCicloLectivo=0";
						}
					}else{
						$restriccion = " AND curso.idCicloLectivo=".$idCicloLectivo;
					}
					
					if($idTurno!=0){
						$restriccion .= " AND curso.idTurno=".$idTurno;
					}
					
					//Cargo el modelo donde estan los datos de los cursos registrados para pedirle un listado con todos ellos segun las restricciones
					$this->load->model('m_curso');
					
					//Busco todos los cursos segun las restricciones correspondientes, tanto activos como inactivos, menos los borrados(-1)
					$listadoCursos = $this->m_curso->buscar($restriccion);
					
					//Le paso el listado de todos los cursos a la vista para que los muestre en una tabla
					$datos['cursos'] = $listadoCursos;					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
					
					//Cargo la vista donde se muestra la tabla de cursos y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_cursos', $datos, true);
					
					//Cargo la vista principal con los datos de la vista recien generada
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para consultar los registros.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo solo se puede llamar con ajax
	//Sirve para eliminar el curso pasado por la url
	//El segundo y tercer parametro indica si hay que filtrar los cursos en el resultado
	//Ultima verificación: 28-10-2014
	function eliminar($idCurso=null, $idCicloLectivo=null, $idTurno=null){
		//Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1')){
			//Segunda comprobacion: Que idCurso pasado sea numerico y mayor que cero. Ademas que idCicloLectivo pasado sea numerico y mayor o igual que cero. Lo mismo para idTurno.
			if(is_numeric($idCurso) && $idCurso>0 && is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idTurno) && $idTurno>=0){
				//Cargo el modelo donde estan los datos de los cursos registrados
				$this->load->model('m_curso');
				
				//Busco al curso que hay que eliminar para corroborar que exista
				$curso = $this->m_curso->get($idCurso);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para corroborar que exista
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de los turnos
				$this->load->model('m_turno');
				
				//Busco al turno para corroborar que exista
				$turno = $this->m_turno->get($idTurno);
				
				//Tercera comprobacion: Que el curso exista. Ademas que el ciclo lectivo pasado por la url sea existente, o bien sea cero. Lo mismo para el turno.
				if($curso->num_rows() == 1 && ($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($turno->num_rows() == 1 || $idTurno==0)){
					//Elimino al curso pasado por la url
					$respuesta = $this->m_curso->eliminar($idCurso, $this->session->userdata('idUsuarioLog'));
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo de filtrado
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los turnos activos
					$listadoTurnos = $this->m_turno->buscarActivos();
					
					//Le paso el listado de todos los turnos a la vista para que los muestre en un combo de filtrado
					$datos['turnos'] = $listadoTurnos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Le pasamos a la vista cual es el ciclo lectivo que debe mostrar seleccionado en el combo de filtrado
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el que haya sido pasado
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
					
					//Le paso a la vista el id del turno para que lo seleccione en el combo de filtrado
					$datos['idTurnoSel'] = $idTurno;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Restricciones a la consulta de la busqueda de cursos segun el ciclo lectivo y turno seleccionados (Se muestran en la tabla)
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					$restriccion = "";
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							$restriccion = " AND curso.idCicloLectivo=".$cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							$restriccion = " AND curso.idCicloLectivo=0";
						}
					}else{
						$restriccion = " AND curso.idCicloLectivo=".$idCicloLectivo;
					}
					
					if($idTurno!=0){
						$restriccion .= " AND curso.idTurno=".$idTurno;
					}
					
					//Cargo el modelo donde estan los datos de los cursos registrados para pedirle un listado con todos ellos segun las restricciones
					//$this->load->model('m_curso');
					
					//Busco todos los cursos segun las restricciones correspondientes, tanto activos como inactivos, menos los borrados(-1)
					$listadoCursos = $this->m_curso->buscar($restriccion);
					
					//Le paso el listado de todos los cursos a la vista para que los muestre en una tabla
					$datos['cursos'] = $listadoCursos;
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					
					//Cargo la vista donde se muestra la tabla de cursos
					$this->load->view('v_cursos', $datos);
				} else {
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					echo("No existe el registro seleccionado para borrar.");
				}
			} else {
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				echo("No se ha pasado los parametros necesarios para borrar un registro.");
			}			
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			echo("No tiene permiso para borrar un registro.");
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Abre la pantalla con el formulario para crear un curso nuevo
	//Los parametros se utilizan para seleccionar el ciclo o turno en los combos
	function abrirPantallaCrear($idCicloLectivo=null, $idTurno=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1')){
			//Segunda comprobacion: Que idCicloLectivo pasado sea numerico y mayor o igual que cero. Lo mismo para el turno.
			if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idTurno) && $idTurno>=0){
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo que hay que crearle un curso para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de los turnos
				$this->load->model('m_turno');
				
				//Busco al turno que hay que crearle un curso para comprobar que existe
				$turno = $this->m_turno->get($idTurno);
				
				//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero. Lo mismo para el turno
				if(($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($turno->num_rows() == 1 || $idTurno==0)){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo seleccionable
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los turnos activos
					$listadoTurnos = $this->m_turno->buscarActivos();
					
					//Le paso el listado de todos los turnos a la vista para que los muestre en un combo seleccionable
					$datos['turnos'] = $listadoTurnos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Si el ciclo lectivo pasado por la url es igual a cero entonces hay que seleccionar el ciclo vigente, en caso contrario el del que haya sido pasado
					if($idCicloLectivo==0){
						//Busco el ciclo lectivo vigente
						$cicloLectivoVigente = $this->m_ciclo_lectivo->getVigente();
						
						if($cicloLectivoVigente->num_rows() == 1){
							//Le paso a la vista el id del ciclo lectivo vigente
							$datos['idCicloLectivoSel'] = $cicloLectivoVigente->row()->idCicloLectivo;
						}else{
							//No hay ciclo lectivo seleccionado ni vigente
							$datos['idCicloLectivoSel'] = 0;
						}
					}else{
						//Le paso a la vista el id del ciclo lectivo pasado por la url
						$datos['idCicloLectivoSel'] = $idCicloLectivo;
					}
					
					//Le paso a la vista el id del turno seleccinado
					$datos['idTurnoSel'] = $idTurno;
					
					//Cargo la vista donde se muestra el formulario para crear un curso y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_cursos_crear', $datos, true);
					
					//Cargo la vista principal con los datos de la vista recien generada
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El registro seleccionado no existe
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}			
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo crea realmente el curso. La respuesta se muestra en un iframe dentro del formulario
	function crear(){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1')){	   
			//Segunda comprobacion: Que se haya pasado por post el ciclo lectivo, turno, orden, nombre, abreviatura y el estado del curso a crear.
			if(is_numeric($this->input->post('cicloLectivo',true)) && $this->input->post('cicloLectivo',true)>0 && is_numeric($this->input->post('turno',true)) && $this->input->post('turno',true)>0 && is_numeric($this->input->post('orden',true)) && $this->input->post('orden',true)>0 && $this->input->post('nombre',true) != "" && $this->input->post('abreviatura',true) != "" && ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0')){		
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo que hay que crearle un curso para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($this->input->post('cicloLectivo',true));
				
				//Cargo el modelo donde estan los datos de los turnos
				$this->load->model('m_turno');
				
				//Busco al turno que hay que crearle un curso para comprobar que existe
				$turno = $this->m_turno->get($this->input->post('turno',true));
				
				//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente. Lo mismo para el turno
				if($cicloLectivo->num_rows() == 1 && $turno->num_rows() == 1){
					//Cargo el modelo donde estan los datos de los cursos
					$this->load->model('m_curso');
					
					//Creamos el curso
					$resultado = $this->m_curso->crear($this->input->post('cicloLectivo',true), $this->input->post('turno',true), $this->input->post('orden',true), $this->input->post('nombre',true), $this->input->post('abreviatura',true), $this->input->post('descripcion',true), $this->input->post('estado',true), $this->session->userdata('idUsuarioLog'));
					
					if($resultado == 1){
						echo("<script> alert('El curso: ".$this->input->post('nombre',true)." se ha creado correctamente.');</script>");
					}else{
						echo("<script> alert('El curso: ".$this->input->post('nombre',true)." no se ha creado. Ha habido un error.');</script>");
					}
				} else {
					//Los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();			
				}
			} else {
				//No se han pasado los parametros minimos necesarios para crear un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();			
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
	
	//Esto metodo no se puede llamar con ajax
	//Este metodo abre la pantalla con los datos del curso pasado por la url
	//El segundo y tercer parametro solo se utilizan para volver a la pantalla consultar con el mismo criterio de filtrado o bien para avanzar o retroceder al siguiente registro.
	function abrirPantallaModificar($idCurso=null, $idCicloLectivo=null, $idTurno=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1')){
			//Segunda comprobacion: Que idCurso pasado sea numerico y mayor que cero. Ademas que idCicloLectivo pasado sea numerico y mayor o igual que cero. Lo mismo para el turno.
			if(is_numeric($idCurso) && $idCurso>0 && is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idTurno) && $idTurno>=0){
				//Cargo el modelo donde estan los datos de los cursos registrados
				$this->load->model('m_curso');
				
				//Busco al curso que hay que modificar para comprobar que existe
				$curso = $this->m_curso->get($idCurso);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de los turnos
				$this->load->model('m_turno');
				
				//Busco al turno para comprobar que existe
				$turno = $this->m_turno->get($idTurno);
				
				//Tercera comprobacion: Que el curso sea existente. Ademas que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero. Lo mismo para el turno
				if($curso->num_rows() == 1 && ($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) && ($turno->num_rows() == 1 || $idTurno==0)){
					//Le paso el curso a modificar a la vista
					$datos['cursoSel'] = $curso;
					
					//Le paso el ciclo lectivo y turno que estaban seleccionados en la pantalla consultar
					$datos['idCicloLectivoSel'] = $idCicloLectivo;
					$datos['idTurnoSel'] = $idTurno;
					
					//Busco al curso siguiente del que hay que modificar
					$idCursoSig = $this->m_curso->getContiguo($idCurso,1, $idCicloLectivo, $idTurno);
					
					//Le paso el curso siguiente del que hay que modificar a la vista
					$datos['idCursoSig'] = $idCursoSig;
					
					//Busco al curso anterior del que hay que modificar
					$idCursoAnt = $this->m_curso->getContiguo($idCurso,-1, $idCicloLectivo, $idTurno);
					
					//Le paso el curso anterior del que hay que modificar a la vista
					$datos['idCursoAnt'] = $idCursoAnt;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los ciclos lectivos
					$listadoCiclosLectivos = $this->m_ciclo_lectivo->buscar();
					
					//Le paso el listado de todos los ciclos lectivos a la vista para que los muestre en un combo seleccionable
					$datos['ciclosLectivos'] = $listadoCiclosLectivos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					//Busco todos los turnos y no solo los activos.
					$listadoTurnos = $this->m_turno->buscar();
					
					//Le paso el listado de todos los turnos a la vista para que los muestre en un combo seleccionable
					$datos['turnos'] = $listadoTurnos;
					
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////					
					//Cargo la vista donde se muestra el formulario para modificar un curso y la guardo en una variable para pasarsela a la vista principal
					$datosPrincipal['vista'] = $this->load->view('v_cursos_modificar',$datos, true);
					
					//Cargo la vista principal con los datos de la vista para modificar un registro
					$this->load->view('v_sistema', $datosPrincipal);
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();
			//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
			redirect(site_url("inicio"));
		}
	}
	
	//Este metodo no se puede llamar con ajax
	//Este metodo realmente modifica los datos de un curso
	function modificar($idCurso=null){
	    //Primera comprobacion: Que el usuario tenga iniciada la sesion y que tenga permiso para realizar esta accion.
		if($this->session->userdata('sesionIniciada') == 'Si' && ($this->session->userdata('permisoDirector') == '1' || $this->session->userdata('permisoVicedirector') == '1' || $this->session->userdata('permisoSecretario') == '1')){	   
			//Segunda comprobacion: Que se haya pasado por post el ciclo lectivo, turno, orden, nombre, abreviatura y el estado del curso a modificar. 
			//Ademas que se haya pasado por la url el id del curso a modificar
			if(is_numeric($idCurso) && $idCurso>0 && is_numeric($this->input->post('cicloLectivo',true)) && $this->input->post('cicloLectivo',true)>0 && is_numeric($this->input->post('turno',true)) && $this->input->post('turno',true)>0 && is_numeric($this->input->post('orden',true)) && $this->input->post('orden',true)>0 && $this->input->post('nombre',true) != "" && $this->input->post('abreviatura',true) != "" && ($this->input->post('estado',true) == '1' || $this->input->post('estado',true) == '0')){		
				//Cargo el modelo donde estan los datos de los cursos
				$this->load->model('m_curso');
				
				//Busco al curso que hay que modificar para comprobar que existe
				$curso = $this->m_curso->get($idCurso);
				
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($this->input->post('cicloLectivo',true));
				
				//Cargo el modelo donde estan los datos de los turnos
				$this->load->model('m_turno');
				
				//Busco al turno para comprobar que existe
				$turno = $this->m_turno->get($this->input->post('turno',true));
				
				//Tercera comprobacion: Que el curso pasado por la url sea existente. Lo mismo para el ciclo lectivo y turno.
				if($curso->num_rows() == 1 && $cicloLectivo->num_rows() == 1  && $turno->num_rows() == 1){
					//Modificamos el curso
					$resultado = $this->m_curso->modificar($idCurso,$this->input->post('cicloLectivo',true), $this->input->post('turno',true), $this->input->post('orden',true), $this->input->post('nombre',true), $this->input->post('abreviatura',true), $this->input->post('descripcion',true), $this->input->post('estado',true));
					
					if($resultado == 1){
						echo("<script> alert('El curso: ".$this->input->post('nombre',true)." se ha modificado correctamente.');</script>");
					}else{
						echo("<script> alert('El curso: ".$this->input->post('nombre',true)." no se ha modificado. Ha habido un error o los datos permanecieron iguales.');</script>");
					}
				} else {
					//El o los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();
					//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
					redirect(site_url("inicio"));
				}
			} else {
				//Los parametros pasados no son validos para modificar un registro.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();
				//Lo redirigimos al login ya que como no se llamo con ajax se puede redirigir.
				redirect(site_url("inicio"));
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}
	}
	
	//Esto metodo SOLO se puede llamar con ajax
	//Este metodo se usa en la pantalla crear y modificar division cuando se cambia la seleccion del combo de ciclo lectivo seleccionado.
	//Tambien se usa en la pantalla crear y modificar asignatura.
	//Estado sirve para saber si hay que buscar todos los cursos o solo los activos.
	function filtrar($estado=null, $idCicloLectivo=null, $idTurno=null){
	    //Primera comprobacion: Que el usuario tenga iniciada sesion
		if($this->session->userdata('sesionIniciada') == 'Si'){
			//Segunda comprobacion: Que idCicloLectivo sea numerico y mayor o igual que cero. Que idTurno sea numerico y mayor o igual que cero. Que estado sea igual a 1 o 0.
			if(is_numeric($idCicloLectivo) && $idCicloLectivo>=0 && is_numeric($idTurno) && $idTurno>=0 && is_numeric($estado) && ($estado==0 || $estado==1)){
				//Cargo el modelo donde estan los datos de los ciclos lectivos
				$this->load->model('m_ciclo_lectivo');
				
				//Busco al ciclo lectivo para comprobar que existe
				$cicloLectivo = $this->m_ciclo_lectivo->get($idCicloLectivo);
				
				//Cargo el modelo donde estan los datos de los turnos
				$this->load->model('m_turno');
				
				//Busco al turno para comprobar que existe
				$turno = $this->m_turno->get($idTurno);
				
				//Tercera comprobacion: Que el ciclo lectivo pasado por la url sea existente o bien el id sea igual a cero. Lo mismo para el turno
				if(($cicloLectivo->num_rows() == 1 || $idCicloLectivo==0) &&($turno->num_rows() == 1 || $idTurno==0)){
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////				
					$restriccion = "";
					if($idCicloLectivo!=0){
						$restriccion = " AND curso.idCicloLectivo=".$idCicloLectivo;
					}else{
						$restriccion = " AND curso.idCicloLectivo=0";
					}
					
					if($idTurno!=0){
						$restriccion .= " AND curso.idTurno=".$idTurno;
					}
					
					if($estado==1)	$restriccion .= " AND curso.estado=".$estado;
					
					//Cargo el modelo donde estan los datos de los cursos registrados para pedirle un listado con todos ellos
					$this->load->model('m_curso');
					
					//Busco todos los cursos segun la restricciones correspondientes, tanto activos como inactivos, menos los borrados(-1)
					$listadoCursos = $this->m_curso->buscar($restriccion);
					
					//Le paso el listado de todos los cursos a la vista para que los muestre en un combo
					$datos['cursos'] = $listadoCursos;
					
					//Cargo la vista donde se arma el combo
					$this->load->view('v_cursos_select',$datos);
				} else {
					//Los registros no existen.
					//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
					$this->session->sess_destroy();			
				}
			} else {
				//No se han pasado los parametros minimos necesarios.
				//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
				$this->session->sess_destroy();			
			}
		} else {
			//El usuario no tiene permiso para realizar esta accion.
			//Destruimos la sesion ya que si llego hasta aca lo hizo mediante alguna tecnica no apropiada y no utilizando la interfaz del sistema.
			$this->session->sess_destroy();			
		}		
	}
}